<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');
global $data, $admin;

class Evaluacion extends CI_Controller {

    public function __construct() {
        parent::__construct();
        global $admin, $data;
        # cargamos variables
        $admin = $this->session->userdata('admin');
        $admin['place'] = 'evaluacion';
        # verifica si pasó por sushitto
        if ($admin['ta_tipo_administrativo_id'] != 1) {
            redirect('sushitto');
        }
        $this->carga_estadisticas();
        $this->output->enable_profiler(FALSE);
    }

    public function index() {
        global $data, $admin;
        #el cuestionario ya empezo?
        if ($this->session->userdata('c_cuestionario_id')) {
            redirect('evaluacion/console');
        }
        $this->load->helper('date');

        $data['lista_sucursales'] = $this->evaluacion_model->lista_sucursales();
        $data['lista_tipos_aspi'] = $this->evaluacion_model->tipos_aspi();

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_supervisor', $data);
        $this->load->view('evaluacion/general/inicio_evaluacion');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function carga_estadisticas() {
        global $data;
        $data['tPreg'] = $this->mining_model->total_preguntas();
        $data['tCuest'] = $this->mining_model->total_cuestionarios();
    }

    public function comenzar() {
        $this->form_validation->set_rules('c_comensales', 'Personas Comiendo', 'required|trim|xss_clean');
        $this->form_validation->set_rules('c_aforo', 'Capacidad máxima', 'required|trim|xss_clean');
        $this->form_validation->set_rules('tipo_aspi', 'Tipo aspi', 'required|trim|xss_clean');
        $this->form_validation->set_rules('c_fecha_usuario', 'Fecha de usuario', 'required|trim|xss_clean');
        $this->form_validation->set_rules('c_hora_inicio', 'Hora de inicio', 'required|trim|xss_clean');
        $this->form_validation->set_rules('c_fecha', 'Fecha real', 'required|trim|xss_clean');

        #verificamos formulario en busca de errores de ususario
        if (!$this->form_validation->run()) {
            redirect('evaluacion');
        }
        $c_fecha = $this->input->post('c_fecha');
        $c_hora_inicio = $this->input->post('c_hora_inicio');
        $c_comensales = $this->input->post('c_comensales');
        $c_aforo = $this->input->post('c_aforo');
        $s_sucursal_id = $this->input->post('s_sucursal_id');
        $c_fecha_usuario = $this->input->post('c_fecha_usuario');
        $c_ip_inicia_cuestionario = $this->input->ip_address();

        $cuestionario = $this->evaluacion_model->crear_cuestionario($c_fecha, $c_hora_inicio, $c_comensales, $c_aforo, $s_sucursal_id, $c_fecha_usuario, $c_ip_inicia_cuestionario);
        # la variable c_cuestionario_id determinará que el cuestionario a empezado
        $this->session->set_userdata('c_cuestionario_id', $cuestionario->id);
        $this->session->set_userdata('ta_tipo_aspi_id', $this->input->post('tipo_aspi'));
        $this->datos_cuestionario($this->input->post('tipo_aspi'), $cuestionario->id);
        $this->initialize_quiz($this->session->userdata('c_cuestionario_id'), $this->session->userdata('ta_tipo_aspi_id'));
        redirect('evaluacion/console');
    }

    private function datos_cuestionario($tipo_aspi, $c_cuestionario_id) {
        switch ($tipo_aspi) {
            case 1:
                $this->session->set_userdata('nombre_tipo_aspi', 'Domicilio');
                break;
            case 2: $this->session->set_userdata('nombre_tipo_aspi', 'Mostrador');
                break;
            case 3: $this->session->set_userdata('nombre_tipo_aspi', 'Salón');
                break;
        }
        $this->session->set_userdata('sucursal', $this->evaluacion_model->datos_sucursal($c_cuestionario_id));
    }

    private function initialize_quiz($c_cuestionario_id, $ta_tipo_aspi_id) {
        # obtener datos para el reporte
        $question = $this->evaluacion_model->questionList($ta_tipo_aspi_id);
        foreach ($question as $v) {
            $this->evaluacion_model->guardar_respuesta($c_cuestionario_id, $v->p_pregunta_id, 5);
        }
    }

    public function console() {
        global $admin, $data;
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');

        # obtener datos para el reporte
        $data['resp_A'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $data['xsubctrlcal_A'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $data['totalXCatA'] = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'A');

        $data['resp_S'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $data['xsubctrlcal_S'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $data['totalXCatS'] = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'S');

        $data['resp_P'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $data['xsubctrlcal_P'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $data['totalXCatP'] = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'P');

        $data['resp_I'] = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $data['xsubctrlcal_I'] = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $data['totalXCatI'] = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'I');

        $t = $this->evaluacion_model->totals($ta_tipo_aspi_id, $c_cuestionario_id);

        $data['aspi_PP'] = $t->puntos_posibles;
        $data['aspi_PO'] = $t->puntos_obtenidos;
        $data['aspi_CA'] = $t->calific;
        $data['aspi_CT'] = $t->criticos;
        $data['aspi_CD'] = $t->desviaciones;

        $data['subA'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'A');
        $data['subS'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'S');
        $data['subP'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'P');
        $data['subI'] = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'I');

        $data['lista_acciones'] = $this->evaluacion_model->getPlanAccion($c_cuestionario_id);

        $data['nombre_tipo_aspi'] = $this->session->userdata('nombre_tipo_aspi');
        $data['listaOpcionesNa'] = $this->evaluacion_model->listaOpcionesNa();

        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('evaluacion/general/console_panel');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    /**
     * Retorna una lista de las calificaciones de las preguntas<br>
     * dentro de un arreglo cuyo indice es la letra de su subcategoria<br>
     * ejemplo A,B,C...
     * @param int $ta_tipo_aspi_id tipo aASPI 1,2,3
     * @param char $c_categoria A|S|P|I
     * @param int $c_cuestionario_id id del cuestionario actual
     * @return array
     */
    private function lista_resp_xsubcat($ta_tipo_aspi_id, $c_categoria, $c_cuestionario_id) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->resp_xsubcat($ta_tipo_aspi_id, $c_cuestionario_id, $c_categoria, $v->s_subcategoria);
            $index++;
        }
        return $datos;
    }

    /**
     * Retorna un arreglo con los resultados parciales contabilizando la penalizacion
     * @param int $ta_tipo_aspi_id tipo aspi 1,2,3
     * @param char $c_categoria A|S|P|I
     * @param int $c_cuestionario_id id del cuestionario actual
     * @return array
     */
    private function lista_parcal_xsubctrlcal($ta_tipo_aspi_id, $c_categoria, $c_cuestionario_id) {
        $lista_subcat = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, $c_categoria);
        $datos = array();
        $index = 'A';
        foreach ($lista_subcat as $v) {
            $datos[$index] = $this->evaluacion_model->parcal_xsubctrlcal_nn($ta_tipo_aspi_id, $c_cuestionario_id, $c_categoria, $v->s_subcategoria, $v->s_subcategoria_id);
            $index++;
        }
        return $datos;
    }

    /**
     * Retorna el total de la categoria indicada, se utiliza para generar los totales del reporte
     * @param char $categoria
     * @return array arreglo asociativo con los totales de la categoria
     */
    private function totalxcat($categoria) {
        $totalCategoria = array();
        $totalElementos = count($categoria);
        $bandera = 0;
        $totalCategoria['puntos_obtenidos'] = 0;
        $totalCategoria['criticos'] = 0;

        foreach ($categoria as $subcat) {
            if ($subcat->puntos_obtenidos == 'CRITICO') {
                $bandera++;
            }

            $totalCategoria['puntos_obtenidos'] +=$subcat->puntos_obtenidos;
            $totalCategoria['criticos'] +=$subcat->criticos;
        }

        # si todos son criticos
        if ($totalElementos == $bandera) {
            $totalCategoria['puntos_obtenidos'] = 'CRITICO';
            $totalCategoria['calific'] = 'CRITICO';
        } else {
            #$totalCategoria['calific'] = round(($totalCategoria['puntos_obtenidos'] / $totalCategoria['puntos_amabilidad']) * 100);
            $totalCategoria['calific'] = 89;
        }
        return $totalCategoria;
    }

    public function save() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $on_opcion_na_id = $this->input->post('on_opcion_na_id');
        $c_calificacion_id = $this->input->post('c_calificacion_id');
        $pa_no_estandar = $this->input->post('no_estandar');
        $on_opcion = $this->evaluacion_model->getOpcionNA($on_opcion_na_id)->on_opcion;

        $this->modificacionPlanAccion($on_opcion, $c_cuestionario_id, $pa_no_estandar);
        $this->evaluacion_model->updateCalifASPI($on_opcion_na_id, $c_calificacion_id);

        $this->output->set_output("on_opcion_na_id:  $on_opcion_na_id <br> c_calificacion_id: $c_calificacion_id");
    }

    public function cerrarSesionASPI() {
        $this->session->unset_userdata('c_cuestionario_id');
        $this->session->unset_userdata('ta_tipo_aspi_id');
        $this->session->unset_userdata('nombre_tipo_aspi');
        $this->session->unset_userdata('sucursal');
        redirect('evaluacion');
    }

    public function update_subtotalsXcat() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        $tipo = $this->input->post('tipo');
        $xsubctrlcal = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, $tipo, $c_cuestionario_id);
        $this->output->set_output(json_encode($xsubctrlcal));
    }

    public function update_totals() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        $tipo = $this->input->post('tipo');
        $totalXCat = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, $tipo);
        $this->output->set_output(json_encode($totalXCat));
    }

    public function update_sumTotals() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        $t = $this->evaluacion_model->totals($ta_tipo_aspi_id, $c_cuestionario_id);
        $this->output->set_output(json_encode($t));
    }

    /**
     * Para evitar modificacion en la base de datos se concidera no_estandar
     * como la union entre la subcategoria a la que pertence la pregunta 
     * mas su matricula
     * @param String $on_opcion
     * @param int $c_cuestionario_id
     * @param String $pa_no_estandar Es la concatenacion de la categoria mas 
     * la matricula correspondiente a la pregunta que se esta evaluando     *      
     * @example  no_estandar = A-1 
     *     
     * Algotritmo de Actualizacion de Tabla Plan de Acción
     * 1.-Buscar por id_cuestionario y $no_estandar 
     * 2.- Si existe registro en Plan Accion
     *      2.1.-Si opcion = Cumple 0 no aplica o empty
     *          2.1.1.-  Borrar de la tabla el registro
     * 3.- Si no
     *      3.1.- Si opcion = desviacion o critico 
     *          3.1.1 Guardar en la tabla el registro
     *      
     */
    public function modificacionPlanAccion($on_opcion, $c_cuestionario_id, $pa_no_estandar) {
        $registro = $this->evaluacion_model->existeRegistroPA($c_cuestionario_id, $pa_no_estandar);
        if ($registro) {//Si existe
            if ($on_opcion == 'CUMPLE' || $on_opcion == 'NO APLICA' || $on_opcion == 'EMPTY') {
                $this->evaluacion_model->borrarRegistroPA($c_cuestionario_id, $pa_no_estandar);
            }
        } else {//No existes
            if ($on_opcion == 'DESVIACION' || $on_opcion == 'CRITICO') {
                $this->evaluacion_model->guardarRegistroPA($c_cuestionario_id, $pa_no_estandar);
            }
        }
    }

    public function getPlanAccion() {
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $lista_acciones = $this->evaluacion_model->getPlanAccion($c_cuestionario_id);
        $this->output->set_output(json_encode($lista_acciones));
    }

    public function setPlanAct() {
        $pa_plan_accion_id = $this->input->post('pa_plan_accion_id');
        $pa_descripcion_desviacion = $this->input->post('pa_descripcion_desviacion');
        $pa_accion_correctiva = $this->input->post('pa_accion_correctiva');
        $pa_fecha_cumplimiento = $this->input->post('pa_fecha_cumplimiento');
        $pa_responsable = $this->input->post('pa_responsable');

        $this->evaluacion_model->setPlanAccion($pa_descripcion_desviacion, $pa_accion_correctiva, $pa_fecha_cumplimiento, $pa_responsable, $pa_plan_accion_id);
    }

    public function pdf() {
        global $data;
        $admin = $this->session->userdata('admin');
        //Datos para Comenzar el Cuestionario
        $c_cuestionario_id = $this->session->userdata('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->session->userdata('ta_tipo_aspi_id');
        $nombre_tipo_aspi = $this->session->userdata('nombre_tipo_aspi');
        $sucursal = $this->session->userdata('sucursal');

        $cuestionario = $this->evaluacion_model->getDatosCuestionario($c_cuestionario_id);
        $lista_acciones = $this->evaluacion_model->getPlanAccion($c_cuestionario_id);

        if (is_object($sucursal)) {
            $sucursal_nombre = $sucursal->s_nombre;
        } else {
            $sucursal_nombre = $sucursal;
        }

        //Inicialización del PDF
        $filename = "reporte" . rand(100, 999) . ".pdf";
        $this->load->library('Pdf');
        $pdf = new Pdf('P', 'mm', 'A4', true, 'UTF-8', false);
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor('Frederick Valentin');
        $pdf->SetTitle('Evaluación ASPI');
        $pdf->SetSubject('TITULO');
        $pdf->SetKeywords('ASPI, MTI, hk');

        // datos por defecto de cabecera, se pueden modificar en el archivo tcpdf_config_alt.php de libraries/config
        $PDF_HEADER_LOGO = "sushiitto_logo.png";
        $PDF_HEADER_TITLE = "Sistema de evaluación ASPI";
        $PDF_HEADER_STRING = "Cuestionario: " . $nombre_tipo_aspi . "                                       $sucursal_nombre";
        $pdf->SetHeaderData($PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, $PDF_HEADER_TITLE, $PDF_HEADER_STRING, array(103, 58, 183), array(0, 64, 128));
        $pdf->setFooterData($tc = array(103, 58, 183), $lc = array(103, 58, 183));

        // datos por defecto de cabecera, se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

        // se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

        // se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

        // se pueden modificar en el archivo tcpdf_config.php de libraries/config
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

        //relación utilizada para ajustar la conversión de los píxeles
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

        // ---------------------------------------------------------
        // establecer el modo de fuente por defecto
        $pdf->setFontSubsetting(true);

        // Establecer el tipo de letra
        //Si tienes que imprimir carácteres ASCII estándar, puede utilizar las fuentes básicas como
        // Helvetica para reducir el tamaño del archivo.
        $pdf->SetFont('Helvetica', '', 8, '', true);

        // Añadir una página
        // Este método tiene varias opciones, consulta la documentación para más información.
        $pdf->AddPage();

        //fijar efecto de sombra en el texto
        $style = file_get_contents(PDF_PATH_HK . 'aspi_styles.html', true);

        //preparamos y maquetamos el contenido a crear
        $html = '' . $style;
        $x = 150;
        $pdf->SetXY($x, 23);
        $pdf->Cell(55, 0, 'Unidad: ' . $sucursal_nombre, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 28);
        $pdf->Cell(55, 0, 'Fecha: ' . $cuestionario->c_fecha, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 33);
        $pdf->Cell(55, 0, 'Horario: ' . $cuestionario->c_hora_inicio, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 38);
        $pdf->Cell(55, 0, 'Aforo: ' . $cuestionario->c_aforo, 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY($x, 43);
        $pdf->Cell(55, 0, 'Comenzales: ' . $cuestionario->c_comensales, 'B', 1, 'C', 0, '', 0);
        //---------------------------------------------  
        # obtener datos para el reporte
        $resp_A = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $xsubctrlcal_A = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'A', $c_cuestionario_id);
        $totalXCatA = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'A');

        $resp_S = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $xsubctrlcal_S = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'S', $c_cuestionario_id);
        $totalXCatS = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'S');

        $resp_P = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $xsubctrlcal_P = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'P', $c_cuestionario_id);
        $totalXCatP = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'P');

        $resp_I = $this->lista_resp_xsubcat($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $xsubctrlcal_I = $this->lista_parcal_xsubctrlcal($ta_tipo_aspi_id, 'I', $c_cuestionario_id);
        $totalXCatI = $this->evaluacion_model->totalXCat($ta_tipo_aspi_id, $c_cuestionario_id, 'I');

        $t = $this->evaluacion_model->totals($ta_tipo_aspi_id, $c_cuestionario_id);

        $aspi_PP = $t->puntos_posibles;
        $aspi_PO = $t->puntos_obtenidos;
        $aspi_CA = $t->calific;
        $aspi_CT = $t->criticos;
        $aspi_CD = $t->desviaciones;

        $subA = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'A');
        $subS = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'S');
        $subP = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'P');
        $subI = $this->evaluacion_model->list_subcats($ta_tipo_aspi_id, 'I');

        $lista_acciones = $this->evaluacion_model->getPlanAccion($c_cuestionario_id);
        $nombre_tipo_aspi = $this->session->userdata('nombre_tipo_aspi');
        $listaOpcionesNa = $this->evaluacion_model->listaOpcionesNa();



        $html.='<h2> Resumen de Auditoria ASPI </h2> 
            <table class="tablaTotal" >
                    <tr>
                        <td>AUDITORÍA ASPI</td>
                        <td>PUNTOS POSIBLES</td>
                        <td>PUNTOS OBTENIDOS</td>
                        <td>RESULTADOS %</td>
                        <td>NO. CRÍTICOS / DESVIACIONES </td>
                    </tr>
                    <tr >
                    <td>AMABILIDAD</td>
                        <td>' . $totalXCatA->puntos_posibles . '</td>
                        <td>' . $totalXCatA->puntos_obtenidos . '</td>
                        <td>' . $totalXCatA->calific . '%</td>
                        <td>' . $totalXCatA->criticos . '/' . $totalXCatA->desviaciones . '</td>
                    </tr>
                    <tr>
                       <td>SERVICIO</td>
                       <td>' . $totalXCatS->puntos_posibles . '</td>
                       <td>' . $totalXCatS->puntos_obtenidos . '</td>
                       <td>' . $totalXCatS->calific . '%</td>
                       <td>' . $totalXCatS->criticos . '/' . $totalXCatS->desviaciones . '</td>
                   </tr>
                   <tr >
                       <td>PRODUCTO</td>
                       <td>' . $totalXCatP->puntos_posibles . '</td>
                       <td>' . $totalXCatP->puntos_obtenidos . '</td>
                       <td>' . $totalXCatP->calific . '%</td>
                       <td>' . $totalXCatP->criticos . '/' . $totalXCatP->desviaciones . '</td>
                   </tr>
                   <tr >
                       <td>IMAGEN</td>
                       <td>' . $totalXCatI->puntos_posibles . '</td>
                       <td>' . $totalXCatI->puntos_obtenidos . '</td>
                       <td>' . $totalXCatI->calific . '%</td>
                       <td>' . $totalXCatI->criticos . '/' . $totalXCatI->desviaciones . '</td>
                   </tr>

                   <tr>
                       <td>ASPI TOTAL</td>
                       <td>' . $aspi_PP . '</td>
                       <td>' . $aspi_PO . '</td>
                       <td>' . $aspi_CA . '%</td>
                       <td>' . $aspi_CT . '/' . $aspi_CD . '</td>
                   </tr>
               </table>';

        // Imprimimos el texto con writeHTMLCell()
        $pdf->writeHTMLCell(140, $h = 8, 12, 20, $html, 0, $ln = 1, FALSE, $reseth = FALSE, 'L', $autopadding = true);

        $pdf->SetXY($x, 88);
        $html = $style . '<h2> Amabilidad </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="amabilidad" >';
        foreach ($subA as $v) {
            $html.='<tr bgcolor="#673AB7" color="#FFFFFF">
                        <td >' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> OPCION NA </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_A[$v->s_subcategoria] as $v) {
                $opcion = ($v->on_opcion != 'EMPTY') ? $v->on_opcion : '-';
                $color=$this->color_renglon($bandera, $opcion);
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td align="left">' . $v->p_pregunta . '</td>
                            <td align="right">' . $v->p_pp . '</td>
                            <td align="right">' . $v->p_pc . '</td>
                            <td>' . $opcion . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#7E57C2" color="#FFFFFF">
                        <td></td>
                        <td>Calific. %</td>
                        <td>Puntos Obtenidos</td>
                        <td>Puntos Posibles</td>
                        <td>No. De críticos / Desviaciones</td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->calific . '%</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->puntos_posibles . '</td>
                        <td>' . $xsubctrlcal_A[$v->s_subcategoria]->criticos . '/' . $xsubctrlcal_A[$v->s_subcategoria]->desviaciones . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#9575CD" color="#FFFFFF">
                    <td >Total Amabilidad</td>
                    <td>Puntos  posibles Amabilidad</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos / Desviaciones</td>
                </tr>
                <tr>
                    <td ></td>
                    <td>' . $totalXCatA->puntos_posibles . '</td>
                    <td>' . $totalXCatA->puntos_obtenidos . '</td>
                    <td>' . $totalXCatA->calific . '%</td>
                    <td>' . $totalXCatA->criticos . '/' . $totalXCatA->desviaciones . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 100, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);

        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Servicio </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="amabilidad" >';
        foreach ($subS as $v) {
            $html.='<tr bgcolor="#1976D2" color="#FFFFFF">
                        <td>' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> OPCION NA </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_S[$v->s_subcategoria] as $v) {
               $opcion = ($v->on_opcion != 'EMPTY') ? $v->on_opcion : '-';
                $color=$this->color_renglon($bandera, $opcion);
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td align="left">' . $v->p_pregunta . '</td>
                            <td align="right">' . $v->p_pp . '</td>
                            <td align="right">' . $v->p_pc . '</td>
                            <td>' . $opcion . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#00BCD4" color="#FFFFFF">
                        <td></td>
                        <td>Calific. %</td>
                        <td>Puntos Obtenidos</td>
                        <td>Puntos Posibles</td>
                        <td>No. De críticos / Desviaciones</td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->calific . '%</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->puntos_posibles . '</td>
                        <td>' . $xsubctrlcal_S[$v->s_subcategoria]->criticos . '/' . $xsubctrlcal_S[$v->s_subcategoria]->desviaciones . '</td>
                        <td>XXXX</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#039BE5" color="#FFFFFF">
                    <td >Total Servicio</td>
                    <td>Puntos  posibles Amabilidad</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos / Desviaciones</td>
                </tr>
                <tr>
                     <td></td>
                    <td>' . $totalXCatS->puntos_posibles . '</td>
                    <td>' . $totalXCatS->puntos_obtenidos . '</td>
                    <td>' . $totalXCatS->calific . '%</td>
                    <td>' . $totalXCatS->criticos . '/' . $totalXCatS->desviaciones . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);


        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Producto </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="producto" >';
        foreach ($subP as $v) {
            $html.='<tr bgcolor="#388E3C" color="#FFFFFF">
                        <td>' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> OPCION NA </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_P[$v->s_subcategoria] as $v) {
                $opcion = ($v->on_opcion != 'EMPTY') ? $v->on_opcion : '-';
                $color=$this->color_renglon($bandera, $opcion);
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td align="left">' . $v->p_pregunta . '</td>
                            <td align="right">' . $v->p_pp . '</td>
                            <td align="right">' . $v->p_pc . '</td>
                            <td>' . $opcion . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#4CAF50" color="#FFFFFF">
                        <td></td>
                        <td>Calific. %</td>
                        <td>Puntos Obtenidos</td>
                        <td>Puntos Posibles</td>
                        <td>No. De críticos / Desviaciones</td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->calific . '%</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->puntos_posibles . '</td>
                        <td>' . $xsubctrlcal_P[$v->s_subcategoria]->criticos . '/' . $xsubctrlcal_P[$v->s_subcategoria]->desviaciones . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#558B2F" color="#FFFFFF">
                    <td >Total Producto</td>
                    <td>Puntos  posibles Producto</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos / Desviaciones</td>
                </tr>
                <tr>
                <td></td>
                    <td>' . $totalXCatP->puntos_posibles . '</td>
                    <td>' . $totalXCatP->puntos_obtenidos . '</td>
                    <td>' . $totalXCatP->calific . '%</td>
                    <td>' . $totalXCatP->criticos . '/' . $totalXCatP->desviaciones . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);


        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Imagen </h2>';
        $pdf->writeHTML($html, $ln = true);

        $html = '<table class="imagen" >';
        foreach ($subI as $v) {
            $html.='<tr bgcolor="#F4511E" color="#FFFFFF">
                        <td>' . $v->s_subcategoria . '</td>
                        <td>' . $v->s_nombre . '</td>
                        <td> PP </td>
                        <td> PC </td>
                        <td> OPCION NA </td>
                    </tr>';
            $bandera = TRUE;
            foreach ($resp_I[$v->s_subcategoria] as $v) {
                $opcion = ($v->on_opcion != 'EMPTY') ? $v->on_opcion : '-';
                $color=$this->color_renglon($bandera, $opcion);
                $html .='<tr bgcolor="#' . $color . '">
                            <td>' . $v->sclave . '</td>
                            <td align="left">' . $v->p_pregunta . '</td>
                            <td align="right">' . $v->p_pp . '</td>
                            <td align="right">' . $v->p_pc . '</td>
                            <td>' . $opcion . '</td>
                        </tr>';
                $bandera = !$bandera;
            }

            $html .='<tr bgcolor="#FF5722" color="#FFFFFF">
                        <td></td>
                        <td>Calific. %</td>
                        <td>Puntos Obtenidos</td>
                        <td>Puntos Posibles</td>
                        <td>No. De críticos / Desviaciones</td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->calific . '%</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->puntos_obtenidos . '</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->puntos_posibles . '</td>
                        <td>' . $xsubctrlcal_I[$v->s_subcategoria]->criticos . '/' . $xsubctrlcal_I[$v->s_subcategoria]->desviaciones . '</td>
                    </tr>';
        }

        $html .='<tr bgcolor="#FF3D00" color="#FFFFFF">
                    <td >Total Amabilidad</td>
                    <td>Puntos  posibles Amabilidad</td>
                    <td>Puntos obtenidos</td>
                    <td>Calific. %</td>
                    <td>No. De críticos / Desviaciones</td>
                </tr>
                <tr>
                    <td></td>
                    <td>' . $totalXCatI->puntos_posibles . '</td>
                    <td>' . $totalXCatI->puntos_obtenidos . '</td>
                    <td>' . $totalXCatI->calific . '%</td>
                    <td>' . $totalXCatI->criticos . '/' . $totalXCatI->desviaciones . '</td>
                </tr>
            </table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);

        $pdf->SetFont('Helvetica', '', 8, '', true);
        $pdf->AddPage('P');
        $pdf->SetXY($x, 20);
        $html = $style . '<h2> Plan de Acción </h2>';
        $pdf->writeHTML($html, $ln = true);
        $html = '<table >
         <tr bgcolor="#7986CB" color="#FFFFFF">
            <td>No. Estándar</td>
            <td>Descripción de desviación</td>
            <td>Acción correctiva</td>
            <td>Fecha de Cumplimiento</td>
            <td>Responsable</td>
        </tr>';
        $bandera = TRUE;
        foreach ($lista_acciones as $a) {
            if ($bandera) {
                $color = 'F5F5F5';
            } else {
                $color = 'E0E0E0';
            }
            $html .='<tr bgcolor="#' . $color . '">
                <td>' . $a->pa_no_estandar . '</td>
                <td>' . $a->pa_descripcion_desviacion . '</td>
                <td>' . $a->pa_accion_correctiva . '</td>
                <td>' . $a->pa_fecha_cumplimiento . '</td>
                <td>' . $a->pa_responsable . '</td>
            </tr>';
            $bandera = !$bandera;
        }
        $html.= '</table>';
        $pdf->writeHTMLCell(0, $h = 8, 12, 25, $html, 0, $ln = 1, FALSE, $reseth = TRUE, 'C', $autopadding = true);
        // ---------------------------------------------------------
        // Cerrar el documento PDF y preparamos la salida
        // Este método tiene varias opciones, consulte la documentación para más información.
        #lineas para firmar
        //      $pdf->Line(50, 245, 210-50, 245); // 50mm from each edge
        //        $pdf->Line(50, 260, 210-50, 260); // 50mm from each edge
        $pdf->SetXY(55, 230);
        $pdf->Cell(94, 0, "Gerente", 'B', 1, 'C', 0, '', 0);
        $pdf->SetXY(55, 245);
        $pdf->Cell(94, 0, "Consultor: " . $admin['a_nombre'], 'B', 1, 'C', 0, '', 0);
        $nombre_archivo = utf8_decode($filename);
        $pdf->Output($nombre_archivo, 'D');
    }

    public function buscar() {
        global $data, $admin;
        $data['cuestionarios'] = $this->evaluacion_model->lista_cuestionarios();
        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container');
        $this->load->view('menu/menu_supervisor', $data);
        $this->load->view('evaluacion/edicion/ver');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
    }

    public function setVals() {
        $c_cuestionario_id = $this->input->post('c_cuestionario_id');
        $ta_tipo_aspi_id = $this->input->post('ta_tipo_aspi_id');
        $s_descripcion = $this->input->post('s_descripcion');
        $ta_tipo = $this->input->post('ta_tipo');

        $this->session->set_userdata('c_cuestionario_id', $c_cuestionario_id);
        $this->session->set_userdata('ta_tipo_aspi_id', $ta_tipo_aspi_id);
        $this->session->set_userdata('sucursal', str_replace('-', ' ', $s_descripcion));
        $this->session->set_userdata('nombre_tipo_aspi', $ta_tipo);
    }

    private function color_renglon($bandera,$opcion) {
        if ($bandera) {
            $color = 'F5F5F5';
        } else {
            $color = 'E0E0E0';
        }
        if ($opcion == 'DESVIACION') {
            $color = 'FFCDD2';
        }
        if ($opcion == 'CRITICO') {
            $color = 'eb2c3f';
        }
        return $color;
    }
    
    public function conteoAuditorias(){
        global $admin,$data;
        
        $data['listaAuditadas'] = $this->evaluacion_model->getListaSucAudit();
        $data['listaNoAuditadas'] = $this->evaluacion_model->getListaSucNoAudit();
        
        $this->load->view('template/header', $admin);
        $this->load->view('template/open_content_container', $data);
        $this->load->view('menu/menu_supervisor');
        $this->load->view('auditorias/content');
        $this->load->view('template/close_content_container');
        $this->load->view('template/footer');
        
    }
}
